//////////////////////////////////////////////////////////////////////////

#ifndef _THEME_H_
#define _THEME_H_

//#include <SDL\SDL.h>
//#include <SDL\SDL_ttf.h>

#ifndef _COLORS_H_
#include "colors.h"
#endif

#ifndef _FONTS_H_
#include "fonts.h"
#endif

#ifndef _IMAGES_H_
#include "images.h"
#endif

#ifndef _SOUNDS_H_
#include "sounds.h"
#endif

struct _TTF_Font;
typedef struct _TTF_Font TTF_Font;
struct SDL_Color;
struct SDL_Surface;

class GUI_Theme
{
//////////////////////////////////////////////////////////////////////////

public:

//////////////////////////////////////////////////////////////////////////

    static void Reload(const std::string& _resourcesFolder, float _resizeFactor);
    static void Release();
    
    static void Resize(float _resizeFactor);
    static float GetResizeFactor();
    static void ReloadMapImages(const std::string& _mapFolder);

    static TTF_Font *Font(GUI_Fonts::Font _fontName);
    static SDL_Color &Color(GUI_Colors::Color _colorName);
    static SDL_Surface *Image(GUI_Images::Image _imageName);

    static Mix_Chunk *GetSound(GUI_Sounds::Sound _soundName);
    static Mix_Music *GetMusic(GUI_Sounds::Music _musicName);

//////////////////////////////////////////////////////////////////////////

private:

//////////////////////////////////////////////////////////////////////////

    static std::string m_ResourcesFolder;
    static float m_ResizeFactor;

    static GUI_Fonts *m_Fonts;
    static GUI_Colors *m_Colors;
    static GUI_Images *m_Images;
    static GUI_Sounds *m_Sounds;

//////////////////////////////////////////////////////////////////////////
};


//////////////////////////////////////////////////////////////////////////

#endif

//////////////////////////////////////////////////////////////////////////
